﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Classes.Model.Entidade;
using Classes.Conec;

namespace Classes.Model.Dao
{
    public class CidadeDAO
    {
        private const String SQL_SELECT_ID = "SELECT * FROM CIDADE WHERE ID_CIDADE = @ID";
        private const String SQL_SELECT = "SELECT * FROM CIDADE";
        private static CidadeDAO cidade;

        public static CidadeDAO getInstance()
        {
            if (cidade == null)
            {
                cidade = new CidadeDAO();
            }
            return cidade;
        }

        public List<CidadeDTO> select()
        {
            using (SqlConnection conn = Conectar.getConexao())
            {
                List<CidadeDTO> cidade = new List<CidadeDTO>();
                SqlCommand executar_comando = new SqlCommand(SQL_SELECT, conn);
                try
                {
                    conn.Open();
                    SqlDataReader reader = executar_comando.ExecuteReader();
                    while (reader.Read())
                    {
                        var estado = reader.GetValue(2);
                        var nome = reader.GetValue(1);
                        var id = reader.GetValue(0);
                        CidadeDTO cid = new CidadeDTO(Convert.ToUInt16(id), Convert.ToString(nome), Convert.ToString(estado));
                        cidade.Add(cid);
                        cid = null;
                    }
                    reader.Close();
                    return cidade;
                }
                catch (Exception)
                {
                    return null;
                }
            }
        }

        public CidadeDTO select(int id_cid)
        {
            using (SqlConnection conn = Conectar.getConexao())
            {
                CidadeDTO cid = null;
                SqlCommand executar_comando = new SqlCommand(SQL_SELECT_ID, conn);
                try
                {
                    conn.Open();
                    executar_comando.Parameters.Add("@ID", System.Data.SqlDbType.Int, 10).Value = id_cid;
                    SqlDataReader reader = executar_comando.ExecuteReader();
                    while (reader.Read())
                    {
                        var estado = reader.GetValue(2);
                        var nome = reader.GetValue(1);
                        var id = reader.GetValue(0);
                        cid = new CidadeDTO(Convert.ToUInt16(id), Convert.ToString(nome), Convert.ToString(estado));
                    }
                    reader.Close();
                    return cid;
                }
                catch (Exception)
                {
                    return null;
                }
            }
        }
    }
}
